// 导入模块
const express = require('express')
// 文件上传插件
var multipart = require('connect-multiparty');
// token 
const jwt = require('jsonwebtoken');
// jsonwebtoken 的作用 ​核心功能：用于 ​生成（签名）和解析（验证）JWT。
var { expressjwt } = require("express-jwt");
// express-jwt 的作用 ​核心功能：作为 Express 中间件，​自动验证请求中的 JWT，并将解析后的数据挂载到 req.auth（或自定义属性）。
// redis
const { redis } = require("./database/redis")
const path = require('path');
const user = require('./controllers/usersController')
//创建Express应用
const app = express();
// 配置跨域
var cors = require('cors')

app.use(cors())

// post请求中间件
app.use(express.json())
app.use(express.urlencoded())

// 设置上传目录
// multipart 中间件只负责处理文件上传，而不会自动提供静态文件服务。
app.use(multipart({ uploadDir: './public/uploads' }));

// 配置静态文件服务。使用 express.static 中间件来提供静态文件服务。
// 将 public 目录设置为静态文件目录，可以通过 /public 前缀访问。
app.use('/public', express.static(path.join(__dirname, 'public')));

// 按模块加载路由
const usersRouter = require("./router/usersRouter")
const rolesRouter = require("./router/rolesRouter")
const permissionRouter = require("./router/permissionRouter")
const studentsRouter = require("./router/studentsRouter")
const testRouter = require("./router/testsRouter")
const assigsRouter = require("./router/assigsRouter")
const attendsRouter = require("./router/attendsRouter")
const hostelsRouter = require("./router/hostelsRouter")
const inspectRouter = require("./router/inspectRouter")
const analysisRouter = require("./router/analysisRouter")
const costRouter = require("./router/costRouter")
const classRouter = require("./router/classRouter")
const teacherRouter = require("./router/teacherRouter")
const studentRouter = require("./router/studentExams")

app
    .use(expressjwt({
        algorithms: ["HS256"],
        credentialsRequired: false,//关键
        secret: "39qw89r23890",//加密密钥，可换,'
    }));

// 路由路径配置
app.use('/users', user.refreshToken, usersRouter)
app.use('/roles', user.refreshToken, rolesRouter)
app.use('/permissions', user.refreshToken, permissionRouter)
app.use('/students', user.refreshToken, studentsRouter)
app.use('/tests', user.refreshToken, testRouter)
app.use("/assignments", user.refreshToken, assigsRouter)
app.use('/attends', user.refreshToken, attendsRouter)
app.use('/hostels', user.refreshToken, hostelsRouter)
app.use('/inspects', user.refreshToken, inspectRouter)
app.use('/analysis', user.refreshToken, analysisRouter)
app.use('/cost', user.refreshToken, costRouter)
app.use('/classes', user.refreshToken, classRouter)
app.use('/teacher', user.refreshToken, teacherRouter)
app.use('/student', user.refreshToken, studentRouter)


app.listen(3000, () => {
    console.log("服务器监听的地址是:http:127.0.0.1:3000")
})